package com.vilen.cms.service;

import com.vilen.basic.model.Pager;
import com.vilen.cms.model.Group;
import com.vilen.cms.model.Role;
import com.vilen.cms.model.User;

import java.util.List;

/**
 * Created by vilen on 2015/8/26.
 */
public interface IUserService {
    /**
     * 添加用户，需要先判断用户名是否存在
     * @param user
     * @param rids
     * @param gids
     */
    public void add(User user,Integer[] rids,Integer[] gids);

    /**
     * 删除用户，注意把用户和角色和组的对应关系删除
     * 用户存在相应的文章不能删除
     * @param id
     */
    public void delete(int id);

    /**
     * 用户的更新，如果rids中的角色在用户中已经存在，不做更新
     * 如果rids中的角色在用户中不存在就要添加操作，如果用户中的角色不存在
     * rids中，删除操作
     *
     * @param user
     * @param rids
     * @param gids
     */
    public void update(User user,Integer[] rids,Integer[] gids);

    /**
     * 更新用户的状态
     * @param id
     */
    public void updateStatus(int id);

    /**
     * 列表用户
     */
    public Pager<User> findUser();

    /**
     * 获取用户信息
     * @param id
     * @return
     */
    public User load(int id);

    /**
     * 获取用户的角色信息
     * @param id
     * @return
     */
    public List<Role> listUserRoles(int id);

    /**
     * 获取用户的组信息
     * @param id
     * @return
     */
    public List<Group> listUserGroups(int id);

    public List<Integer> listUserRoleIds(int id);

    public List<Integer> listUserGroupIds(int id);

    public List<User> listGroupUsers(int gid);

    public List<User> listRoleUsers(int rid);

    public User login(String username, String password);

    public void update(User user);

    public void updatePwd(int uid, String oldPwd, String newPwd);
}
